本文作为游戏中的AI编程的第一篇,主要介绍一下遗传算法,以及使用遗传算法进行寻路计算。
一,遗传算法介绍
在继续阅读下文之前,请先确定你是否知道什么是遗传,变异,染色体等生物知识。如果你对这些知识不了解,建议你看看高中的生物课本。当然你不用精通这方面的知识。好吧,如果你已经准备好了,那么我们开始吧。
遗传算法的过程实际上是对于自然界进化的模仿。首先,你需要定义一种表示问题的解决方案的编码方式,就像染色体一样(记得染色体有四种,两两配对后,组合成双螺旋结构,这就是染色体的编码格式)。然后你需要初始化一些染色体,它们每一个代表解的一种候选方案。这些初始化的染色体可以是随机的。然后让这些染色体开始进行繁衍进化(中间夹杂这一些变异)。经过进化,最后找到最优解(也可能是较合适的解)。
遗传算法不能保证找到最优的解,看上去这点不是遗传算法的优点。但是遗传算法的计算过程可能效率很高。然而,最重要的是,求解过程中,并不需要知道解的过程,只需要知道如何编码解,解码解,以及验证解的合理性就可以了。
1.染色体 染色体一般使用二进制编码,如下: 01010010100101001111 重要的是,这个染色体是可以被解码的,以表示一种解。这个可以是一个很差的解(通常会是刚开始的一些染色体)。但是每个染色体都表示中可能的解。
2.解法步骤
循环以下步骤,直到找到解:
1.测试每个染色体,标注每个染色体的解的分数。(即解的适合程度)
2.找出其中的两个解
一,遗传算法介绍
在继续阅读下文之前,请先确定你是否知道什么是遗传,变异,染色体等生物知识。如果你对这些知识不了解,建议你看看高中的生物课本。当然你不用精通这方面的知识。好吧,如果你已经准备好了,那么我们开始吧。
遗传算法的过程实际上是对于自然界进化的模仿。首先,你需要定义一种表示问题的解决方案的编码方式,就像染色体一样(记得染色体有四种,两两配对后,组合成双螺旋结构,这就是染色体的编码格式)。然后你需要初始化一些染色体,它们每一个代表解的一种候选方案。这些初始化的染色体可以是随机的。然后让这些染色体开始进行繁衍进化(中间夹杂这一些变异)。经过进化,最后找到最优解(也可能是较合适的解)。
遗传算法不能保证找到最优的解,看上去这点不是遗传算法的优点。但是遗传算法的计算过程可能效率很高。然而,最重要的是,求解过程中,并不需要知道解的过程,只需要知道如何编码解,解码解,以及验证解的合理性就可以了。
1.染色体 染色体一般使用二进制编码,如下: 01010010100101001111 重要的是,这个染色体是可以被解码的,以表示一种解。这个可以是一个很差的解(通常会是刚开始的一些染色体)。但是每个染色体都表示中可能的解。
2.解法步骤
循环以下步骤,直到找到解:
1.测试每个染色体,标注每个染色体的解的分数。(即解的适合程度)
2.找出其中的两个解